﻿using System;
using System.IO;

namespace GeneticAlgorithm
{
    // Константные значения
    internal static class Constants
    {
        public static int Population = 10;

        public static bool UseElite = true;

        public static int ToNextGeneration = 5;

        public static int MaxGeneration = 10000;

        // Общий генератор рандомных чисел
        public static readonly Random Rand = new Random();
        
        // Ширина изображения
        public static int Width = 0;
        // Высота изображения
        public static int Height = 0;

        // Минимальное количество полигонов
        public static int MinPolygons = 10;
        // Максимальное количество полигонов 
        public static int MaxPolygons = 1000;

        // Значение перемещения на небольшое расстояние
        public static int NearRange = 3;
        // Значение перемещения на среднее расстояние
        public static int MiddleRange = 20;

        // Значение перемещения на небольшое расстояние
        public static double NearAngleRange = Math.PI / 60;
        // Значение перемещения на среднее расстояние
        public static double MiddleAngleRange = Math.PI / 12;

        //Вероятность поменять порядок полигонов
        public static double MutationOrderChance = 0.001;

        // Максимальная вероятность попадания точки в любое место изображения
        public static double MutationPointMoveMaxChance = 0.001;
        // Максимальная вероятность перемещения точки на среднее расстояние
        public static double MutationPointMoveMiddleChance = 0.001;
        // Максимальная вероятность перемещения точки на небольшое расстояние
        public static double MutationPointMoveNearChance = 0.001;

        // Вероятность изменения ...
        public static double MutationBrushAChance = 0.001;
        // Вероятность изменения количества красного цвета
        public static double MutationBrushRChance = 0.001;
        // Вероятность изменения количества зелёного цвета
        public static double MutationBrushGChance = 0.001;
        // Вероятность изменения количества синего цвета
        public static double MutationBrushBChance = 0.001;

        // Вероятность добавления полигона
        public static double MutationWorkareaAddPolygonChance = 0.02;
        // Вероятность удаления полигона
        public static double MutationWorkareaDelPolygonChance = 0.001;

        //Вероятность изменения типа полигона(круг, квадрат, триугольник)
        public static double MutationChangeTypeChance = 0.001;

        //Вероятность изменения радиуса полигона
        public static double MutationRadiusChangeChance = 0.001;
        public static double MutationRadiusChangeMiddleChance = 0.001;
        public static double MutationRadiusChangeNearChance = 0.001;
       
        //Вероятность изменения угла полигона
        public static double MutationAngleChangeChance = 0.001;
        public static double MutationAngleChangeNearChance = 0.001;
        public static double MutationAngleChangeMiddleChance = 0.001;
        
    }
}
